'''
  http无状态，通过cookie解决
    服务器将cookie放到响应中，浏览器拿到cookie放到浏览器中，自动携带发送到服务器
  set-cookie: NAME=VALUE; Expires/Max-age=DATE;Path=PATH;Domain=DOMAIN_NAME;

  使用cookie库和HTTPCookieProcessor模拟登陆：

  模拟登陆
    1，创建一个cookiejar对象
    2，使用cookiejar创建一个HTTPCookieProcess对象
    3，使用2创建的handler创建一个opener
    4，使用opener发送登陆请求（邮箱和密码）

'''

from urllib import request, parse
from http.cookiejar import CookieJar

header = {
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}

# 常见opener
def get_opener():
  cookieJar = CookieJar()
  handler = request.HTTPCookieProcessor(cookieJar)
  opener = request.build_opener(handler)
  return opener

# 模拟登陆
def login_renren(opener):
  data = {
    'email': '18838517172',
    'password': 't199505216910'
  }
  login_url = 'http://www.renren.com/PLogin.do'
  req = request.Request(login_url, data=parse.urlencode(data).encode('utf-8'), headers=header)
  opener.open(req)

# 获取主页数据
def visit_profile(opener):
  dapeng_url = 'http://www.renren.com/880151247/profile'
  rq = request.Request(dapeng_url, headers=header)
  resp = opener.open(rq)
  with open('python/pachong/renren.html', 'w', encoding='utf-8') as fp:
    fp.write(resp.read().decode('utf-8'))


opener = get_opener()
login_renren(opener)
visit_profile(opener)






